package com.example.myweb.Service.Auth;

import com.example.myweb.Domain.Entity.Dynamic;
import com.example.myweb.Domain.Entity.User;
import com.example.myweb.Dto.CreateDynamicRequestDTO;
import com.example.myweb.Dto.DynamicDetailDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface DynamicService {
//    Dynamic createDynamic(CreateDynamicRequestDTO request, User currentUser);
//    // --- 新增方法 ---
//    /**
//     * 根据ID获取动态详情
//     * @param dynamicId 动态ID
//     * @return 动态详情DTO
//     */
//    DynamicDetailDTO getDynamicById(Long dynamicId);
//
//    /**
//     * 获取动态列表（分页）
//     * @param pageable 分页参数
//     * @return 分页后的动态详情列表
//     */
//    Page<DynamicDetailDTO> getAllDynamics(Pageable pageable);
//    /**
//     * 切换动态的点赞状态
//     * @param dynamicId 动态ID
//     * @param currentUser 当前登录用户
//     * @return 返回当前的点赞状态 (true: 已点赞, false: 未点赞)
//     */
//    boolean toggleLike(Long dynamicId, User currentUser);

        /**
         * 创建一条新动态。
         * @param request 包含动态内容、图片、话题等信息的DTO
         * @param currentUser 当前登录的用户
         * @return 创建成功后持久化的Dynamic实体
         */
        Dynamic createDynamic(CreateDynamicRequestDTO request, User currentUser);

        /**
         * 根据ID获取单条动态的详细信息。
         * @param dynamicId 动态ID
         * @param currentUser 当前查看的用户（可以为null），用于判断点赞等状态
         * @return 包含图片、投票等信息的动态详情DTO
         */
        DynamicDetailDTO getDynamicById(Long dynamicId, User currentUser);

        /**
         * 分页获取所有已发布的动态列表。
         * @param pageable 分页和排序信息
         * @param currentUser 当前查看的用户（可以为null）
         * @return 分页后的动态列表
         */
        Page<DynamicDetailDTO> getAllDynamics(Pageable pageable, User currentUser);

        // 注意：关于动态的点赞、更新、删除等操作，你可以根据需要在这里添加接口定义。
        // 例如，如果你想让用户能删除自己的动态，可以添加：
         void deleteDynamic(Long dynamicId, User currentUser);



}